Eli Zaretskii [Sat, 9 Jul 2011 16:23:49 +0000 (19:23 +0300)]
src/bidi.c: Fix type of a variable revealed on x86_64.
Eli Zaretskii [Sat, 9 Jul 2011 14:36:58 +0000 (17:36 +0300)]
Update commentary on bidi.c.
Eli Zaretskii [Sat, 9 Jul 2011 14:32:59 +0000 (17:32 +0300)]
Remove from etc/NEWS the warning about display strings not being reordered.
Eli Zaretskii [Sat, 9 Jul 2011 13:57:13 +0000 (16:57 +0300)]
Fix various problems with cursor positioning around display properties.
src/xdisp.c (move_it_in_display_line_to): Record prev_method and
prev_pos immediately before the call to set_iterator_to_next.
Fixes cursor motion in bidi-reordered lines with stretch glyphs
and strings displayed in margins. (Bug#8133) (Bug#8867)
Return MOVE_POS_MATCH_OR_ZV only if iterator position is past
TO_CHARPOS.
(pos_visible_p): Support positions in bidi-reordered lines. Save
and restore bidi cache.
(move_it_in_display_line_to): If iterator ended up at
EOL, but we never saw any buffer positions smaller than
to_charpos, return MOVE_POS_MATCH_OR_ZV. Fixes vertical cursor
motion in bidi-reordered lines.
Eli Zaretskii [Thu, 7 Jul 2011 17:48:51 +0000 (20:48 +0300)]
Fix another bug with cursor motion around display properties.
Still not quite there yet.
src/xdisp.c (find_row_edges): If ROW->start.pos gives position
smaller than min_pos, use it as ROW->minpos. (Bug#7616)
Eli Zaretskii [Tue, 5 Jul 2011 17:06:29 +0000 (20:06 +0300)]
Empty the bidi cache "stack" when it->sp is zeroed.
Solves crashes due to overflow of bidi cache stack.
Make sure cache is saved and restored around all temporary iterations.
src/dispnew.c (buffer_posn_from_coords): Save and restore the bidi
cache around display iteration.
src/window.c (Fwindow_end, window_scroll_pixel_based)
(displayed_window_lines, Frecenter): Save and restore the bidi
cache around display iteration.
src/bidi.c (bidi_unshelve_cache): Ensure we have enough space before
restoring the shelved cache.
(bidi_cache_ensure_space): Don't assume the required size is just
one BIDI_CACHE_CHUNK away.
src/xdisp.c (back_to_previous_visible_line_start, reseat_1)
(init_iterator): Empty the bidi cache "stack".
Eli Zaretskii [Sun, 3 Jul 2011 18:36:56 +0000 (21:36 +0300)]
Save and restore bidi cache when saving and restoring the iterator.
Not tested, just compiled.
src/bidi.c (bidi_shelve_cache, bidi_unshelve_cache): New functions.
src/dispextern.h (bidi_shelve_cache, bidi_unshelve_cache): Declare
prototypes.
src/xdisp.c (SAVE_IT, RESTORE_IT): New macros.
(pos_visible_p, face_before_or_after_it_pos)
(back_to_previous_visible_line_start)
(move_it_in_display_line_to, move_it_in_display_line)
(move_it_to, move_it_vertically_backward, move_it_by_lines)
(try_scrolling, redisplay_window, display_line): Use them when
saving a temporary copy of the iterator and restoring it back.
Eli Zaretskii [Sat, 2 Jul 2011 15:16:27 +0000 (18:16 +0300)]
Start fixing cursor motion around invisible text.
Hit a MAJOR design problem in pushing and popping bidi iterator state.
src/xdisp.c (reseat_1): Call bidi_init_it to resync the bidi
iterator with IT's position.
(handle_stop, back_to_previous_visible_line_start, reseat_1):
Reset the from_disp_prop_p flag.
src/bidi.c (bidi_cache_search): Don't assume bidi_cache_last_idx is
always valid if bidi_cache_idx is valid.
(bidi_cache_find_level_change): xassert that bidi_cache_last_idx
is valid if it's going to be used.
Eli Zaretskii [Sat, 2 Jul 2011 10:05:14 +0000 (13:05 +0300)]
Fix the use case of popping from display property.
src/dispextern.h (struct iterator_stack_entry, struct it): New
member from_disp_prop_p.
src/xdisp.c (push_it, pop_it): Save and restore from_disp_prop_p.
(handle_single_display_spec, push_display_prop): Set the
from_disp_prop_p flag.
(get_overlay_strings_1): Reset the from_disp_prop_p flag.
(pop_it): Call iterate_out_of_display_property only if we are
popping after iteration over a string that came from a display
property. Fix a typo in popping stretch info. Add an assertion
for verifying that the iterator position is in sync with the bidi
iterator.
(handle_single_display_spec, get_overlay_strings_1)
(push_display_prop): Fix initialization of paragraph direction for
string when that of the parent object is not yet determined.
Eli Zaretskii [Fri, 1 Jul 2011 10:53:29 +0000 (13:53 +0300)]
Support bidi reordering of unibyte strings. Fix crash displaying "All" in mode line of an empty buffer.
src/dispextern.h (struct bidi_string_data): New member `unibyte'.
src/xdisp.c (handle_single_display_spec, next_overlay_string)
(get_overlay_strings_1, reseat_1, reseat_to_string)
(push_display_prop): Set up the `unibyte' member of bidi_it.string
correctly. Don't assume unibyte strings are not bidi-reordered.
(compute_display_string_pos)
(compute_display_string_end): Fix handling the case of C string.
src/bidi.c (bidi_count_bytes, bidi_char_at_pos): Accept an
additional argument UNIBYTE, and support unibyte strings. All
callers changed.
(bidi_fetch_char): Support unibyte strings.
Eli Zaretskii [Fri, 1 Jul 2011 08:45:24 +0000 (11:45 +0300)]
Fix typos in comments. Use xassert.
Eli Zaretskii [Sat, 25 Jun 2011 16:14:01 +0000 (19:14 +0300)]
Initial version of display/overlay strings is working.
src/xdisp.c (set_iterator_to_next, get_visually_first_element): Use
it->bidi_it.string.schars rather than it->string_nchars when
testing whether we're beyond string end, because string_nchars is
zero for strings that come from overlays and display properties.
src/bidi.c (bidi_cache_iterator_state): Fix a bug with testing
character positions against the cached range, when we use a
stacked cache.
src/dispextern.h (struct iterator_stack_entry): New member
paragraph_embedding.
src/xdisp.c (push_it, pop_it): Save and restore it.
Eli Zaretskii [Sat, 25 Jun 2011 11:44:30 +0000 (14:44 +0300)]
Set up the bidi iterator for iterating display strings and overlay strings.
Not tested yet, just compiled.
src/xdisp.c (handle_single_display_spec, next_overlay_string)
(get_overlay_strings_1, push_display_prop): Set up the bidi
iterator for displaying display or overlay strings.
(forward_to_next_line_start): Don't use the shortcut if
bidi-iterating.
(back_to_previous_visible_line_start): If handle_display_prop
pushed the iterator stack, restore the internal state of the bidi
iterator by calling bidi_pop_it same number of times.
(reseat_at_next_visible_line_start): If ON_NEWLINE_P is non-zero,
and we are bidi-iterating, don't decrement the iterator position;
instead, set the first_elt flag in the bidi iterator, to produce
the same effect.
(reseat_1): Remove redundant setting of string_from_display_prop_p.
(push_display_prop): xassert that we are iterating a buffer.
(push_it, pop_it): Save and restore the state of the
bidi iterator. Save and restore the bidi_p flag.
(pop_it): Iterate out of display property for string iteration as
well.
(iterate_out_of_display_property): Support iteration over strings.
(handle_single_display_spec): Set up it->bidi_it for iteration
over a display string, and call bidi_init_it.
src/bidi.c (bidi_cache_start_stack, bidi_push_it): Use IT_STACK_SIZE.
src/dispextern.h (struct iterator_stack_entry): New member bidi_p.
(struct it): Member bidi_p is now a bit field 1 bit wide.
Eli Zaretskii [Thu, 23 Jun 2011 18:09:52 +0000 (21:09 +0300)]
Added to bidi.c support functions for reordering display strings.
src/bidi.c (bidi_push_it, bidi_pop_it): New functions.
(bidi_initialize): Initialize the bidi cache start stack pointer.
(bidi_cache_ensure_space): New function, refactored from part of
bidi_cache_iterator_state.
src/dispextern.h (bidi_push_it, bidi_pop_it): Add prototypes.
Eli Zaretskii [Thu, 23 Jun 2011 15:14:01 +0000 (18:14 +0300)]
Rearrange bidi.c and add leading comments for each part.
No changes in functionality.
Eli Zaretskii [Sun, 19 Jun 2011 18:27:03 +0000 (21:27 +0300)]
Fix display of R2L buffer names in Buffer-menu.
lisp/buff-menu.el (Buffer-menu-buffer+size): Accept an additional
argument LRM; if non-nil, append an invisible LRM character to the
buffer name.
(list-buffers-noselect): Call Buffer-menu-buffer+size with the
last argument non-nil, when formatting buffer names.
Eli Zaretskii [Sat, 18 Jun 2011 20:17:29 +0000 (23:17 +0300)]
Add comments for forced L2R directions of menu bar and tool bar.
GCPRO Lisp string inside bidi.c.
Force L2R direction in buffer menu buffer.
src/xdisp.c (tool_bar_lines_needed, redisplay_tool_bar)
(display_menu_bar): Force left-to-right direction. Add a FIXME
comment for making that be controlled by a user option.
src/bidi.c (bidi_move_to_visually_next): GCPRO the Lisp string we
are iterating.
lisp/buff-menu.el (Buffer-menu-mode, list-buffers-noselect): Force
left-to-right paragraph direction.
Eli Zaretskii [Sat, 18 Jun 2011 14:33:14 +0000 (17:33 +0300)]
Fix a gratuitous crash in emacs -nw with iso-safe terminal encoding.
src/term.c (produce_glyphs): Add IT_GLYPHLESS to the values of
it->what accepted by the xassert. Fixes a gratuitous crash in an
Emacs built with -DXASSERTS.
Eli Zaretskii [Sat, 18 Jun 2011 13:28:53 +0000 (16:28 +0300)]
Tried and abandoned idea of displaying mode line and tool/menu-bars R2L.
Added those features to etc/TODO wishlist.
Fixed src/.gdbinit for changes in Lisp vector structures.
src/.gdbinit (xvectype, xvector, xcompiled, xchartable, xboolvector)
(xpr, xfont, xbacktrace): Use "header.size" when accessing vectors
and vector-like objects.
Eli Zaretskii [Sat, 18 Jun 2011 11:14:51 +0000 (14:14 +0300)]
Refactor getting the first element into a separate function.
src/xdisp.c (get_visually_first_element): New function, refactored
from common parts of next_element_from_buffer, next_element_from_string,
and next_element_from_c_string.
Eli Zaretskii [Sat, 18 Jun 2011 10:11:06 +0000 (13:11 +0300)]
Fix box face decision for BEFORE_P case.
src/xdisp.c (face_before_or_after_it_pos): Support bidi iteration.
Eli Zaretskii [Sat, 18 Jun 2011 08:09:05 +0000 (11:09 +0300)]
Fix the decision about box_face in mode line for reordered text.
This fixes display of composed characters in buffer name on mode line.
src/xdisp.c (face_before_or_after_it_pos): Support bidi iteration
when BEFORE_P is zero.
(next_element_from_c_string): Handle the case of the first string
character that is not the first one in the visual order.
Eli Zaretskii [Thu, 16 Jun 2011 16:32:33 +0000 (19:32 +0300)]
Fix display of R2L strings in mode line.
Composed characters still don't work.
src/xdisp.c (init_iterator): Don't initialize it->bidi_p for strings
here.
(reseat_to_string): Initialize it->bidi_p for strings here.
(next_element_from_string, next_element_from_c_string)
(next_element_from_buffer): Add xassert's for correspondence
between IT's object being iterated and it->bidi_it.string
structure.
src/bidi.c (bidi_level_of_next_char): Fix the logic for looking up
the sentinel state in the cache.
Eli Zaretskii [Mon, 13 Jun 2011 18:35:20 +0000 (21:35 +0300)]
Fix string handling to avoid data relocation gotcha.
Bugs in mode-line display still there.
src/xdisp.c (compute_display_string_pos)
(compute_display_string_end, reseat_to_string): Don't assume
it->bidi_it.string.s always points to string.lstring's data.
src/bidi.c (bidi_fetch_char, bidi_paragraph_init)
(bidi_resolve_explicit_1, bidi_resolve_explicit)
(bidi_resolve_weak, bidi_level_of_next_char): Don't assume
string.s always points to string.lstring's data.
Eli Zaretskii [Sat, 11 Jun 2011 16:50:09 +0000 (19:50 +0300)]
Fixed a bug with displaying strings padded with blanks.
src/xdisp.c (set_iterator_to_next): Advance string position
correctly when padding it with blanks.
Eli Zaretskii [Sat, 11 Jun 2011 15:13:17 +0000 (18:13 +0300)]
Initial version of string reordering. Tested only on mode line and
TTY menu bar. Display is buggy.
src/xdisp.c (next_element_from_buffer): Improve commentary for when
the iterator is before prev_stop.
(init_iterator): Initialize bidi_p from the default value of
bidi-display-reordering, not from buffer-local value. Use the
buffer-local value only if initializing for buffer iteration.
(handle_invisible_prop): Support invisible properties on strings
that are being bidi-reordered.
(reseat_to_string): Enable bidi-related code.
(set_iterator_to_next): Support bidi reordering of C strings and
Lisp strings.
(next_element_from_string): Support bidi reordering of Lisp strings.
(handle_stop_backwards): Support Lisp strings as well.
(display_mode_line, display_mode_element): Temporarily force L2R
paragraph direction.
(display_string): Support display of R2L glyph rows. Use
IT_STRING_CHARPOS when displaying from a Lisp string.
Eli Zaretskii [Sat, 11 Jun 2011 10:29:05 +0000 (13:29 +0300)]
Only commentary changes, no functionality changed.
src/xdisp.c (next_element_from_buffer): Improve commentary for when
the iterator is before prev_stop.
Eli Zaretskii [Fri, 10 Jun 2011 11:43:04 +0000 (14:43 +0300)]
Tested and fixed compute_display_string_pos for buffer iteration.
Also fixed an unrelated bug caused by vertical-motion.
src/xdisp.c (Fcurrent_bidi_paragraph_direction): Initialize
itb.string.lstring.
(compute_display_string_pos, compute_display_string_end):
Fix calculation of the object to scan. Fixes an error when using
arrow keys.
(next_element_from_buffer): Don't abort when IT_CHARPOS is before
base_level_stop; instead, set base_level_stop to BEGV. Fixes
crashes in vertical-motion.
Eli Zaretskii [Thu, 9 Jun 2011 17:12:10 +0000 (20:12 +0300)]
Adapt compute_display_string_pos to iteration over strings.
Just compiled, not yet tested.
src/xdisp.c (compute_display_string_pos): First arg is now struct
`text_pos *'; all callers changed. Support display properties on
Lisp strings.
(compute_display_string_end): Support display properties on Lisp
strings.
(init_iterator, reseat_1, reseat_to_string): Initialize the
string.bufpos member to 0 (zero, for compatibility with IT_CHARPOS
when iterating on a string not from display properties).
src/bidi.c (bidi_fetch_char): Support strings with display
properties.
src/dispextern.h (struct bidi_string_data): New member bufpos.
(compute_display_string_pos): Update prototype.
Eli Zaretskii [Thu, 9 Jun 2011 14:39:27 +0000 (17:39 +0300)]
Add code to initialize bidi iterator for displaying strings.
For now, ifdef'ed away. Some more testing.
src/bidi.c (bidi_level_of_next_char): Allow the sentinel "position"
to pass the test for valid cached positions.
src/xdisp.c (init_iterator): Call bidi_init_it only of a valid
buffer position was specified. Initialize paragraph_embedding to L2R.
(reseat_to_string): Initialize the bidi iterator (for now ifdef'ed out).
(display_string): If we need to ignore text properties of
LISP_STRING, set IT->stop_charpos to IT->end_charpos. (The
original value of -1 will not work with bidi.)
src/dispextern.h (struct bidi_string_data): New member lstring.
Eli Zaretskii [Thu, 9 Jun 2011 11:34:28 +0000 (14:34 +0300)]
Tested with buffer reordering, fixed one crash.
src/xdisp.c (Fcurrent_bidi_paragraph_direction): Initialize
itb.string.s to NULL (avoids a crash in bidi_paragraph_init).
Eli Zaretskii [Wed, 8 Jun 2011 18:01:56 +0000 (21:01 +0300)]
Started work on string reordering. Just compiled, not yet tested.
src/bidi.c (bidi_paragraph_info): Delete unused struct.
(bidi_cache_idx, bidi_cache_last_idx): Declare EMACS_INT.
(bidi_cache_start): New variable.
(bidi_cache_reset): Reset bidi_cache_idx to bidi_cache_start, not
to zero.
(bidi_cache_fetch_state, bidi_cache_search)
(bidi_cache_find_level_change, bidi_cache_iterator_state)
(bidi_cache_find, bidi_peek_at_next_level)
(bidi_level_of_next_char, bidi_find_other_level_edge)
(bidi_move_to_visually_next): Compare cache index with
bidi_cache_start rather than with zero.
(bidi_fetch_char): Accept new argument STRING; all callers
changed. Support iteration over a string.
(bidi_paragraph_init, bidi_resolve_explicit_1)
(bidi_resolve_explicit, bidi_resolve_weak)
(bidi_level_of_next_char, bidi_move_to_visually_next): Support
iteration over a string.
(bidi_set_sor_type, bidi_resolve_explicit_1)
(bidi_resolve_explicit, bidi_type_of_next_char): ignore_bn_limit
can now be zero (for strings); special values 0 and -1 were
changed to -1 and -2, respectively.
(bidi_char_at_pos): New function.
(bidi_paragraph_init, bidi_resolve_explicit, bidi_resolve_weak):
Call it instead of FETCH_MULTIBYTE_CHAR.
(bidi_move_to_visually_next): Abort if charpos or bytepos were not
initialized to valid values.
(bidi_init_it): Don't initialize charpos and bytepos with invalid
values.
src/xdisp.c (compute_display_string_pos)
(compute_display_string_end): Accept additional argument STRING.
(init_iterator, reseat_1): Initialize bidi_it->string.s to NULL.
(reseat_to_string): Initialize bidi_it->string.s and
bidi_it->string.schars.
src/dispextern.h (struct bidi_string_data): New structure.
(struct bidi_it): New member `string'. Make flag members be 1-bit
fields, and put them last in the struct.
(compute_display_string_pos, compute_display_string_end): Update
prototypes.
Eli Zaretskii [Sat, 4 Jun 2011 12:00:30 +0000 (15:00 +0300)]
Fix declaration in bidi_level_of_next_char.
src/bidi.c (bidi_level_of_next_char): clen should be EMACS_NT, not int.
Eli Zaretskii [Fri, 3 Jun 2011 13:34:52 +0000 (16:34 +0300)]
Cleanup. Tested in -nw and verified that bug #7616 didn't become worse.
src/bidi.c (bidi_fetch_char_advance): Remove unused and
unimplemented function.
Eli Zaretskii [Tue, 31 May 2011 18:08:41 +0000 (21:08 +0300)]
src/xdisp.c (single_display_spec_string): Correct a FIXME comment.
Eli Zaretskii [Sat, 28 May 2011 17:23:44 +0000 (20:23 +0300)]
Fix cursor motion across display strings covering reordered text.
src/xdisp.c (set_cursor_from_row): Set start and stop points
according to the row's direction when priming the loop that looks
for the glyph on which to display cursor.
(single_display_spec_intangible_p): Function deleted.
(display_prop_intangible_p): Reimplement to call
handle_display_spec instead of single_display_spec_intangible_p.
Accept 3 additional arguments needed by handle_display_spec. This
fixes incorrect cursor motion across display property with complex
values: lists, `(when COND...)' forms, etc.
(single_display_spec_string_p): Support property values that are
lists with the argument STRING its top-level element.
(display_prop_string_p): Fix the condition for processing a
property that is a list to be consistent with handle_display_spec.
src/keyboard.c (adjust_point_for_property): Adjust the call to
display_prop_intangible_p to its new signature.
src/dispextern.h (display_prop_intangible_p): Adjust prototype.
Eli Zaretskii [Sat, 28 May 2011 11:05:40 +0000 (14:05 +0300)]
Fix cursor motion near overlays covering reordered text.
src/xdisp.c (set_cursor_from_row): Set start and stop points of the
loop that looks for the glyph on which to display cursor according
to the row's direction.
Eli Zaretskii [Sat, 28 May 2011 10:25:19 +0000 (13:25 +0300)]
src/xdisp.c (compute_display_string_pos): Fix bogus parentheses.
Eli Zaretskii [Sat, 21 May 2011 14:22:14 +0000 (17:22 +0300)]
Discovery of replacing display properties now uses the same code
as the display engine. Tested OK with display properties whose
value is a list.
src/dispextern.h (struct bidi_it): New member frame_window_p.
(bidi_init_it, compute_display_string_pos): Update prototypes.
src/bidi.c (bidi_fetch_char): Accept additional argument
FRAME_WINDOW_P and pass it to compute_display_string_pos. All
callers changed.
(bidi_init_it): Accept additional argument FRAME_WINDOW_P and use
it to initialize the frame_window_p member of struct bidi_it.
src/xdisp.c (handle_display_spec): New function, refactored from the
last portion of handle_display_prop.
(compute_display_string_pos): Accept additional argument
FRAME_WINDOW_P. Call handle_display_spec to determine whether the
value of a `display' property is a "replacing spec".
(handle_single_display_spec): Accept 2 additional arguments BUFPOS
and FRAME_WINDOW_P. If IT is NULL, don't set up the iterator from
the display property, but just return a value indicating whether
the display property will replace the characters it covers.
(Fcurrent_bidi_paragraph_direction): Initialize the nchars and
frame_window_p members of struct bidi_it.
Eli Zaretskii [Sat, 14 May 2011 14:05:36 +0000 (17:05 +0300)]
Remove kludgey save and restore of IT->position for push_it.
src/xdisp.c (push_it): Accept second argument POSITION, where pop_it
should jump to continue iteration.
Eli Zaretskii [Sat, 14 May 2011 13:41:52 +0000 (16:41 +0300)]
Text covered by `display' overlays is correctly reordered.
Cursor positioning is not yet right near the overlay.
src/xdisp.c (compute_display_string_pos): Non-trivial implementation.
(compute_display_string_end): New function.
src/dispextern.h (compute_display_string_end): Declare prototype.
src/bidi.c (bidi_resolve_explicit_1): Use ZV for disp_pos.
(bidi_fetch_char): Implement support for runs of characters
covered by display strings.
Eli Zaretskii [Sat, 14 May 2011 11:59:20 +0000 (14:59 +0300)]
Refactoring with bidi_fetch_char tested and debugged.
src/bidi.c (bidi_fetch_char): Accept also character position
corresponding to BYTEPOS. All callers changed.
(bidi_cache_iterator_state, bidi_resolve_explicit_1)
(bidi_resolve_explicit, bidi_resolve_weak)
(bidi_level_of_next_char, bidi_move_to_visually_next): Abort if
bidi_it->nchars is non-positive.
(bidi_level_of_next_char): Don't try to lookup the cache for the
next/previous character if nothing is cached there yet, or if we
were just reseat()'ed to a new position.
(bidi_paragraph_init, bidi_resolve_explicit_1)
(bidi_level_of_next_char): Fix arguments in the calls to
bidi_fetch_char.
Eli Zaretskii [Tue, 10 May 2011 16:12:16 +0000 (19:12 +0300)]
Started work on reordering display strings. Refactor FETCH_CHAR.
Only compiled, not tested.
src/xdisp.c (compute_display_string_pos): New function.
(reseat_1): Initialize bidi_it.disp_pos.
src/bidi.c (bidi_copy_it): Use offsetof.
(bidi_fetch_char, bidi_fetch_char_advance): New functions.
(bidi_cache_search, bidi_cache_iterator_state)
(bidi_paragraph_init, bidi_resolve_explicit, bidi_resolve_weak)
(bidi_level_of_next_char, bidi_move_to_visually_next): Support
character positions inside a run of characters covered by a
display string.
(bidi_paragraph_init, bidi_resolve_explicit_1)
(bidi_level_of_next_char): Call bidi_fetch_char and
bidi_fetch_char_advance instead of FETCH_CHAR and
FETCH_CHAR_ADVANCE.
(bidi_init_it): Initialize new members.
(LRE_CHAR, RLE_CHAR, PDF_CHAR, LRO_CHAR, RLO_CHAR): Remove macro
definitions.
(bidi_explicit_dir_char): Lookup character type in bidi_type_table,
instead of using explicit *_CHAR codes.
(bidi_resolve_explicit, bidi_resolve_weak): Use
FETCH_MULTIBYTE_CHAR instead of FETCH_CHAR, as reordering of
bidirectional text is supported only in multibyte buffers.
src/dispextern.h (struct bidi_it): New members nchars and disp_pos.
ch_len is now EMACS_INT.
(compute_display_string_pos): Declare prototype.
Katsumi Yamaoka [Tue, 10 May 2011 07:30:49 +0000 (07:30 +0000)]
gnus-art.el (gnus-article-mode): Move binding of shr-put-image-function here from gnus-article-prepare-display.
Katsumi Yamaoka [Tue, 10 May 2011 03:14:44 +0000 (03:14 +0000)]
shr.el (shr-put-image-function): New variable.
(shr-image-fetched, shr-image-displayer, shr-tag-img): Funcall it.
(shr-put-image): Return scaled image.
gnus-art.el (gnus-shr-put-image): New function.
(gnus-article-prepare-display): Bind shr-put-image-function to it.
gnus-html.el (gnus-html-wash-images): Register scaled images, not original ones, as deletable.
Glenn Morris [Tue, 10 May 2011 02:31:42 +0000 (19:31 -0700)]
Deprecate using "mode:" to enable minor modes (bug#8613)
* lisp/files.el (hack-one-local-variable-eval-safep):
Consider "eval: (foo-mode)" to be safe.
* doc/emacs/custom.texi (Specifying File Variables):
Deprecate using mode: for minor modes.
* etc/NEWS: Mention this.
* lisp/doc-view.el, lisp/net/soap-client.el:
Change "mode:" minor-mode file local variables to use "eval:".
Glenn Morris [Tue, 10 May 2011 02:22:55 +0000 (19:22 -0700)]
diary-lib.el doc fixes.
* lisp/calendar/diary-lib.el (diary-list-entries-hook)
(diary-mark-entries-hook, diary-nongregorian-listing-hook)
(diary-nongregorian-marking-hook, diary-list-entries)
(diary-include-other-diary-files, diary-mark-entries)
(diary-mark-included-diary-files): Doc fixes.
Juanma Barranquero [Mon, 9 May 2011 23:57:40 +0000 (01:57 +0200)]
lisp/misc.el: Require tabulated-list.el during compilation.
Juri Linkov [Mon, 9 May 2011 23:21:32 +0000 (03:21 +0400)]
* test/automated/occur-tests.el: Move from test/occur-testsuite.el.
Convert to ERT.
Teodor Zlatanov [Mon, 9 May 2011 22:27:17 +0000 (22:27 +0000)]
registry.el (registry-full): Add convenience method. Fix logic.
(registry-insert): Use it. Fix logic here too.
gnus-registry.el (gnus-registry-insert): Add wrapper that calls `registry-prune' if `registry-full' returns t.
(gnus-registry-handle-action, gnus-registry-get-or-make-entry, gnus-registry-set-id-key, gnus-registry-usage-test): Use it.
Chong Yidong [Mon, 9 May 2011 19:42:45 +0000 (15:42 -0400)]
Call compilation-filter-hook in the no-async case too.
* progmodes/compile.el (compilation-start): Run
compilation-filter-hook for the async case too.
(compilation-filter-hook): Doc fix.
Stefan Monnier [Mon, 9 May 2011 19:41:14 +0000 (16:41 -0300)]
* lisp/gnus/nntp.el (nntp-open-connection): Set TCP keepalive option.
Deniz Dogan [Mon, 9 May 2011 17:50:47 +0000 (19:50 +0200)]
Add forgotten ChangeLog entry.
Deniz Dogan [Mon, 9 May 2011 17:47:01 +0000 (19:47 +0200)]
* lisp/wdired.el: Remove outdated installation comment. Fix usage
comment.
Juanma Barranquero [Mon, 9 May 2011 15:52:57 +0000 (17:52 +0200)]
lisp/misc.el: Implement new command `list-dynamic-libraries'.
* misc.el (list-dynamic-libraries--loaded-only-p): New variable.
(list-dynamic-libraries--refresh): New function.
(list-dynamic-libraries): New command.
Eli Zaretskii [Mon, 9 May 2011 13:35:56 +0000 (16:35 +0300)]
Define a replacement for va_copy for MSVC.
nt/config.nt [_MSC_VER] (va_copy): Replacement for the MS compiler.
Andreas Schwab [Mon, 9 May 2011 11:29:51 +0000 (13:29 +0200)]
* w32menu.c (set_frame_menubar): Fix submenu allocation.
Ted Zlatanov [Mon, 9 May 2011 10:40:26 +0000 (05:40 -0500)]
* configure.in: Require GnuTLS 2.6.x or higher.
Chong Yidong [Mon, 9 May 2011 01:25:35 +0000 (21:25 -0400)]
Fix last change.
Chong Yidong [Mon, 9 May 2011 01:24:57 +0000 (21:24 -0400)]
Doc fix to compilation.txt.
Chong Yidong [Mon, 9 May 2011 01:24:00 +0000 (21:24 -0400)]
Various fixes to compilation-error-regexp-alist-alist.
* lisp/progmodes/compile.el (compilation-error-regexp-alist-alist): Fix
the ant regexp to handle end-line and end-column info from jikes.
Re-introduce maven regexp. Give the ruby-Test::Unit regexp a
higher priority to avoid clobbering by gnu.
Chong Yidong [Mon, 9 May 2011 01:22:05 +0000 (21:22 -0400)]
Add regression test for compilation-error-regexp-alist-alist.
* test/automated/compile-tests.el: New file.
Chong Yidong [Sun, 8 May 2011 21:43:07 +0000 (17:43 -0400)]
Convert test/comint-testsuite.el to ERT format.
Chong Yidong [Sun, 8 May 2011 20:07:38 +0000 (16:07 -0400)]
Handle calling
defface on a face with existing theme settings (Bug#8454).
* lisp/cus-face.el (custom-declare-face): Call custom-theme-recalc-face if
the face has existing theme settings.
Ralph Schleicher [Sun, 8 May 2011 18:34:51 +0000 (14:34 -0400)]
Expand file names during browse-url-of-dired-file (Bug#8259).
* lisp/net/browse-url.el (browse-url-of-dired-file): Allow browsing of
special file names `.' and `..'.
Chong Yidong [Sun, 8 May 2011 18:23:11 +0000 (14:23 -0400)]
Handle "my" and "our" keywords in Perl imenu (Bug#8261).
* progmodes/perl-mode.el (perl-imenu-generic-expression): Only match
variables declared via `my' or `our'.
Chong Yidong [Sun, 8 May 2011 05:17:17 +0000 (01:17 -0400)]
Perform grep-mode's buffer modifications in a process filter (Bug#7952)
* progmodes/grep.el (grep-mode-font-lock-keywords): Remove
buffer-changing entries.
(grep-filter): New function.
(grep-mode): Add it to compilation-filter-hook.
* progmodes/compile.el (compilation-filter-hook)
(compilation-filter-start): New defvars.
(compilation-filter): Call compilation-filter-hook prior to
updating the process mark.
Stefan Monnier [Sun, 8 May 2011 02:33:28 +0000 (23:33 -0300)]
* lisp/emacs-lisp/eieio.el (defmethod): Fix typo in last change.
Eli Zaretskii [Sat, 7 May 2011 17:58:40 +0000 (20:58 +0300)]
Fix bug #8595 with setting mailclient-send-it on MS-Windows.
lisp/mail/sendmail.el (send-mail-function): On MS-Windows, default to
mailclient-send-it even if window-system is nil.
Glenn Morris [Sat, 7 May 2011 17:39:44 +0000 (10:39 -0700)]
Remove (tiny change) marker from author now with general assignment,
Eli Zaretskii [Sat, 7 May 2011 15:44:19 +0000 (18:44 +0300)]
Fix bug #8597 with setting frame background mode on w32 console.
src/w32console.c (Fset_screen_color): Doc fix.
(Fget_screen_color): New function.
(syms_of_ntterm): Defsubr it.
lisp/term/w32console.el (terminal-init-w32console): Call
get-screen-color and use its output to set the frame
background-mode.
Eli Zaretskii [Sat, 7 May 2011 11:28:55 +0000 (14:28 +0300)]
Adapt the MS-DOS build to latest changes.
src/callproc.c (call_process_cleanup): Don't close and unlink the
temporary file if Fcall_process didn't create it in the first
place.
(Fcall_process): Don't create tempfile if stdout of the child
process will be redirected to a file specified with `:file'.
Don't try to re-open tempfile in that case, and set fd[0] to -1 as
cue to call_process_cleanup not to close that handle.
msdos/inttypes.h: Include stdint.h.
(uintmax_t): Don't define, it is defined in stdint.h.
msdos/sedlibmk.inp (am__append_1): Edit to comment out.
(am__append_2): Edit to expose.
(NEXT_AS_FIRST_DIRECTIVE_STDARG_H, NEXT_STDARG_H, STDARG_H): Edit
to empty.
(@GL_GENERATE_STDARG_H_TRUE@, @GL_GENERATE_STDARG_H_FALSE@): Edit
to comment out corresponding lines.
Eli Zaretskii [Sat, 7 May 2011 11:25:05 +0000 (14:25 +0300)]
Fix changes in revno 104064 for MS-DOS.
src/callproc.c (call_process_cleanup): Don't close and unlink the
temporary file if Fcall_process didn't create it in the first
place.
(Fcall_process): Don't create tempfile if stdout of the child
process will be redirected to a file specified with `:file'.
Don't try to re-open tempfile in that case, and set fd[0] to -1 as
cue to call_process_cleanup not to close that handle.
Julien Danjou [Sat, 7 May 2011 10:41:20 +0000 (10:41 +0000)]
shr.el (shr-link): Make shr-link inherit from link by default.
Eli Zaretskii [Sat, 7 May 2011 10:24:55 +0000 (13:24 +0300)]
Adapt MS-DOS configury to latest changes.
msdos/inttypes.h: Include stdint.h.
(uintmax_t): Don't define, it is defined in stdint.h.
msdos/sedlibmk.inp (am__append_1): Edit to comment out.
(am__append_2): Edit to expose.
(NEXT_AS_FIRST_DIRECTIVE_STDARG_H, NEXT_STDARG_H, STDARG_H): Edit
to empty.
(@GL_GENERATE_STDARG_H_TRUE@, @GL_GENERATE_STDARG_H_FALSE@): Edit
to comment out corresponding lines.
Michael Albinus [Sat, 7 May 2011 07:45:35 +0000 (09:45 +0200)]
New default value of `ange-ftp-binary-file-name-regexp'.
Stefan Monnier [Sat, 7 May 2011 04:03:49 +0000 (01:03 -0300)]
Make bytecomp.el understand that defmethod defines functions.
* lisp/emacs-lisp/eieio.el (eieio--defalias, eieio--defgeneric-init-form):
New functions.
(defgeneric, eieio--defmethod): Use them.
(eieio-defgeneric): Remove.
(defmethod): Call defgeneric in a way visible to the byte-compiler.
Ben Key [Sat, 7 May 2011 04:00:12 +0000 (23:00 -0500)]
* nt/configure.bat: Renamed the fusercflags variable to escusercflags
so that the variable name better matches its purpose, to be identical
to usercflags with the exception that all quotes are escaped by the \
character.
Renamed the fuserldflags variable to escuserldflags so that the
variable name better matches its purpose, to be identical to
userldflags with the exception that all quotes are escaped by the \
character.
A new ESC_USER_CFLAGS variable is written to config.settings. This
variable has the same value as the escusercflags variable.
* nt/gmake.defs, nt/nmake.defs: Added the variable ESC_CFLAGS. This
variable is identical to the CFLAGS variable except that it includes
the new ESC_USER_CFLAGS variable instead of USER_CFLAGS.
* src/makefile.w32-in: The bootstrap-temacs rule now makes use of one
of two shell specific rules, either bootstrap-temacs-CMD or
bootstrap-temacs-SH. The bootstrap-temacs-SH rule is identical to the
previous implementation of the bootstrap-temacs rule. The
bootstrap-temacs-CMD rule is similar to the previous implementation of
the bootstrap-temacs rule except that it makes use of the ESC_CFLAGS
variable instead of the CFLAGS variable.
These changes are required to extend my earlier fix to add support for
--cflags and --ldflags options that include quotes so that it works
whether make uses cmd or sh as the shell.
Glenn Morris [Sat, 7 May 2011 01:24:04 +0000 (18:24 -0700)]
timeclock.el trivia.
* lisp/calendar/timeclock.el (timeclock-log-data): Remove unused local.
Use let rather than let*.
(timeclock-find-discrep): Remove unused local.
Glenn Morris [Sat, 7 May 2011 01:22:01 +0000 (18:22 -0700)]
* doc/emacs/cal-xtra.texi (Sexp Diary Entries): Mention diary-hebrew-birthday.
Glenn Morris [Sat, 7 May 2011 01:20:47 +0000 (18:20 -0700)]
* lisp/calendar/diary-lib.el (diary-comment-start): Doc fix.
Glenn Morris [Sat, 7 May 2011 01:19:27 +0000 (18:19 -0700)]
* lisp/calendar/appt.el (appt-time-msg-list): Doc fix.
Teodor Zlatanov [Fri, 6 May 2011 23:33:12 +0000 (23:33 +0000)]
shr.el (shr-urlify, shr-link): Fix shr-link face.
Michael Albinus [Fri, 6 May 2011 22:12:31 +0000 (00:12 +0200)]
* dbusbind.c (QCdbus_type_unix_fd): Declare static.
(xd_remove_watch): Don't check QCdbus_type_unix_fd for SYMBOLP, it
is a constant.
(Fdbus_init_bus, xd_read_queued_messages): Bus can be a symbol or
a string. Handle both cases.
(Fdbus_call_method_asynchronously, Fdbus_register_signal)
(Fdbus_register_method): Use Qinvalid_function.
Noah Friedman [Fri, 6 May 2011 19:59:17 +0000 (12:59 -0700)]
apropos.el (apropos-print-doc): Only use emacs-lisp-docstring-fill-column when it is bound to an integer, per that variable's documentation.
Stefan Monnier [Fri, 6 May 2011 16:38:02 +0000 (13:38 -0300)]
* lisp/lpr.el (print-region-1): Echo lpr-program's output, so error messages
and warnings are not silently discarded (e.g. use "-d" instead of "-P").
Juanma Barranquero [Fri, 6 May 2011 15:37:11 +0000 (17:37 +0200)]
src/makefile.w32-in: Update dependencies.
Eli Zaretskii [Fri, 6 May 2011 12:09:08 +0000 (15:09 +0300)]
Adapt Windows include files to latest changes.
nt/inc/inttypes.h [!__MINGW32__]: Include stdint.h. Move the
definition of uintmax_t from here...
nt/inc/stdint.h (uintmax_t): ...to here.
(intptr_t) [!__GNUC__]: New typedef.
Eli Zaretskii [Fri, 6 May 2011 11:26:45 +0000 (14:26 +0300)]
Fix the MS-Windows build broken by revision 104134.
src/lread.c: Include limits.h.
Glenn Morris [Fri, 6 May 2011 10:19:05 +0000 (06:19 -0400)]
Auto-commit of generated files.
Glenn Morris [Fri, 6 May 2011 07:30:20 +0000 (00:30 -0700)]
* lisp/calendar/diary-lib.el (diary-add-to-list): Simplify previous change.
Glenn Morris [Fri, 6 May 2011 07:20:17 +0000 (00:20 -0700)]
ChangeLog format fixes.
Glenn Morris [Fri, 6 May 2011 07:14:30 +0000 (00:14 -0700)]
Allow per-appointment warning times.
* lisp/calendar/appt.el (appt-message-warning-time): Doc fix.
(appt-warning-time-regexp): New option.
(appt-make-list): Respect appt-message-warning-time.
* doc/emacs/calendar.texi (Appointments): Mention appt-warning-time-regexp.
* etc/NEWS: Mention this.
Paul Eggert [Fri, 6 May 2011 07:13:19 +0000 (00:13 -0700)]
Do not assume EMACS_INT is the same width as a pointer.
This prepares for a future patch that will prefer 64-bit EMACS_INT if
available. That patch can be tried now, by compiling with -DWIDE_EMACS_INT,
but it is temporarily not the default so that it can be further tested.
Also, install some other fixes for problems discovered by the static
checking of GCC 4.6.0.
Paul Eggert [Fri, 6 May 2011 06:30:56 +0000 (23:30 -0700)]
Merge from mainline.
Paul Eggert [Fri, 6 May 2011 06:03:30 +0000 (23:03 -0700)]
Merge from gnulib.
Paul Eggert [Fri, 6 May 2011 05:55:01 +0000 (22:55 -0700)]
Temporarily disable wider-than-pointer EMACS_INT.
Glenn Morris [Fri, 6 May 2011 04:28:53 +0000 (21:28 -0700)]
Add diary comments feature.
* lisp/calendar/diary-lib.el (diary-comment-start, diary-comment-end):
New options.
(diary-add-to-list): Strip comments from the displayed string.
(diary-mode): Set comment-start and comment-end.
* doc/emacs/cal-xtra.texi (Fancy Diary Display): Mention diary comments.
* etc/NEWS: Mention this.
Glenn Morris [Fri, 6 May 2011 04:07:47 +0000 (21:07 -0700)]
Silence diff-mode.el compilation.
* lisp/vc/diff-mode.el (smerge-refine-subst): Declare.
(diff-refine-hunk): Don't require smerge-mode when compiling.
Juanma Barranquero [Fri, 6 May 2011 01:05:25 +0000 (03:05 +0200)]
src/gnutls.c, src/image.c: Make function pointers static.